package com.act.moudles.user.entity;

import com.act.utils.validations.AddGroup;
import com.act.utils.validations.UpdateGroup;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.io.Serializable;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;


/**
 * 部门实体类
 * @author monxz
 * @Date 2023-02-06
 */

@TableName(value ="s_org")
@Data
public class Org implements Serializable{

	/**
	*主键
	*/
	@NotNull(message="主键不能为空",groups={UpdateGroup.class})
	@TableId
	private Long orgId;


	/**
	*组织编码
	*/
	@NotEmpty(message="组织编码不能为空",groups={AddGroup.class,UpdateGroup.class})
	private String orgCode;

	/**
	*部门名称
	*/
	@NotEmpty(message="部门名称不能为空",groups={AddGroup.class,UpdateGroup.class})
	private String orgName;

	/**
	*删除标志（0代表存在 2代表删除）
	*/
	private Integer delFlag;

	/**
	*创建者
	*/
	private String createBy;

	/**
	*创建时间
	*/
	private Date createTime;

	/**
	*更新者
	*/
	private String updateBy;

	/**
	*更新时间
	*/
	private Date updateTime;

	/**
	*备注
	*/
	private String remark;

	@TableField(exist = false)
	private List<Org> children = new ArrayList<>();
	
	
	/**
     * 构建查询query
     * @return
     */
    public  LambdaQueryWrapper<Org>  buildQuery(){
        LambdaQueryWrapper<Org> query = new LambdaQueryWrapper<>();
        query.eq(orgId != null,Org::getOrgId,orgId);
        query.eq(StringUtils.isNotEmpty(orgCode),Org::getOrgCode,orgCode);
        query.like(StringUtils.isNotEmpty(orgName),Org::getOrgName,orgName);
		query.eq(Org::getDelFlag,1);
        return  query;
    }
	
	
	
}